home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / idlelib / OutputWindow.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  4KB  |  148 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. from Tkinter import *
  5. from EditorWindow import EditorWindow
  6. import re
  7. import tkMessageBox
  8. import IOBinding
  9.  
  10. class OutputWindow(EditorWindow):
  11.     '''An editor window that can serve as an output file.
  12.  
  13.     Also the future base class for the Python shell window.
  14.     This class has no input facilities.
  15.     '''
  16.     
  17.     def __init__(self, *args):
  18.         EditorWindow.__init__(self, *args)
  19.         self.text.bind('<<goto-file-line>>', self.goto_file_line)
  20.  
  21.     
  22.     def ispythonsource(self, filename):
  23.         return 0
  24.  
  25.     
  26.     def short_title(self):
  27.         return 'Output'
  28.  
  29.     
  30.     def maybesave(self):
  31.         if self.get_saved():
  32.             return 'yes'
  33.         else:
  34.             return 'no'
  35.  
  36.     
  37.     def write(self, s, tags = (), mark = 'insert'):
  38.         if isinstance(s, str):
  39.             
  40.             try:
  41.                 s = unicode(s, IOBinding.encoding)
  42.             except UnicodeError:
  43.                 pass
  44.             except:
  45.                 None<EXCEPTION MATCH>UnicodeError
  46.             
  47.  
  48.         None<EXCEPTION MATCH>UnicodeError
  49.         self.text.insert(mark, s, tags)
  50.         self.text.see(mark)
  51.         self.text.update()
  52.  
  53.     
  54.     def writelines(self, l):
  55.         map(self.write, l)
  56.  
  57.     
  58.     def flush(self):
  59.         pass
  60.  
  61.     rmenu_specs = [
  62.         ('Go to file/line', '<<goto-file-line>>')]
  63.     file_line_pats = [
  64.         'file "([^"]*)", line (\\d+)',
  65.         '([^\\s]+)\\((\\d+)\\)',
  66.         '([^\\s]+):\\s*(\\d+):']
  67.     file_line_progs = None
  68.     
  69.     def goto_file_line(self, event = None):
  70.         if self.file_line_progs is None:
  71.             l = []
  72.             for pat in self.file_line_pats:
  73.                 l.append(re.compile(pat, re.IGNORECASE))
  74.             
  75.             self.file_line_progs = l
  76.         
  77.         line = self.text.get('insert linestart', 'insert lineend')
  78.         result = self._file_line_helper(line)
  79.         if not result:
  80.             line = self.text.get('insert -1line linestart', 'insert -1line lineend')
  81.             result = self._file_line_helper(line)
  82.             if not result:
  83.                 tkMessageBox.showerror('No special line', "The line you point at doesn't look like a valid file name followed by a line number.", master = self.text)
  84.                 return None
  85.             
  86.         
  87.         (filename, lineno) = result
  88.         edit = self.flist.open(filename)
  89.         edit.gotoline(lineno)
  90.  
  91.     
  92.     def _file_line_helper(self, line):
  93.         for prog in self.file_line_progs:
  94.             m = prog.search(line)
  95.             if m:
  96.                 break
  97.                 continue
  98.         else:
  99.             return None
  100.         (filename, lineno) = m.group(1, 2)
  101.         
  102.         try:
  103.             f = open(filename, 'r')
  104.             f.close()
  105.         except IOError:
  106.             return None
  107.  
  108.         
  109.         try:
  110.             return (filename, int(lineno))
  111.         except TypeError:
  112.             return None
  113.  
  114.  
  115.  
  116.  
  117. class OnDemandOutputWindow:
  118.     tagdefs = {
  119.         'stdout': {
  120.             'foreground': 'blue' },
  121.         'stderr': {
  122.             'foreground': '#007700' } }
  123.     
  124.     def __init__(self, flist):
  125.         self.flist = flist
  126.         self.owin = None
  127.  
  128.     
  129.     def write(self, s, tags, mark):
  130.         if not self.owin:
  131.             self.setup()
  132.         
  133.         self.owin.write(s, tags, mark)
  134.  
  135.     
  136.     def setup(self):
  137.         self.owin = owin = OutputWindow(self.flist)
  138.         text = owin.text
  139.         for tag, cnf in self.tagdefs.items():
  140.             if cnf:
  141.                 text.tag_configure(tag, **cnf)
  142.                 continue
  143.         
  144.         text.tag_raise('sel')
  145.         self.write = self.owin.write
  146.  
  147.  
  148.